import * as api from "@/api/users.js"
import useUser from "@/store/users.js"

let onekeyLogin = () => {
	// uni.removeStorageSync('myx-token')
	// console.log('调用了登入')
	//查看本地是否有token
	let token = uni.getStorageSync('myx-token');
	//有一个字段叫做userStore.authView 表示是否已经打开了一键登入
	let userStore = useUser()
	console.log(userStore.authView)
	//没有打开一键登入授权窗口的时候
	if (!userStore.authView) {
		//让authView变成true,表示已经在授权窗口,这么做的目的是为了避免拉起多次一键登入授权窗口
		userStore.authView = true;
		// #ifndef APP-PLUS
		uni.navigateTo({
			url: "/pages/wechatLogin/wechatLogin",
			success(){
				userStore.authView = true;
			}
		})
		// #endif

		// #ifdef APP-PLUS
		uni.login({
			provider: 'univerify',
			univerifyStyle: {
				fullScreen: true, //全屏
				icon: {
					path: "static/logo.png"
				},
				"authButton": {
					"normalColor": "#85BD4E"
				}
			},
			success: (res) => {
				//获取授权的token openid
				let result = res.authResult;
				// console.log(result)
				let openid = result.openid;
				let access_token = result.access_token
				//调用自己的云函数,换取手机号
				uniCloud.callFunction({
						name: "getPhone",
						data: {
							access_token,
							openid
						}
					})
					.then(async res => {
						//如果获取手机号失败
						// console.log(res)
						if (!res.result.state) {
							//关闭一键登入授权窗口
							uni.closeAuthView()
							//跳转到用户名密码登入
							uni.navigateTo({
								url: "/pages/otherLogin/otherLogin",
								success() {
									uni.showToast({
										icon: "error",
										title: "获取手机号失败"
									})
									//标识已经关闭了了一键登入的授权窗口
									userStore.authView = false;
								}
							})
							return
						}

						//获取云函数中返回的手机号
						let phoneNumber = res.result.result.phoneNumber;
						// console.log(phoneNumber)
						//请求开发服务器,传递手机号,进行一键登入
						try {
							let loginResult = await api.onekeyLoginApi(phoneNumber)
							// console.log(loginResult)
							//将用户信息存到pinia
							userStore.userInfo = loginResult.userInfo;
							//将token存储到本地
							uni.setStorageSync('myx-token', loginResult.token)
							//关闭登入窗口
							uni.closeAuthView()
							//标识打开一键登入的字段变成false,避免多次弹出uni.login
							userStore.authView = false;
						} catch (err) {
							// console.log(err)

							uni.navigateTo({
								url: "/pages/otherLogin/otherLogin",
								success() {
									uni.showToast({
										icon: "error",
										title: '登入服务器失败'
									})
									//关闭一键登入的授权窗口
									uni.closeAuthView()
									//标识打开一键登入的字段变成false,避免多次弹出uni.login
									userStore.authView = false;
								}
							})
						}
					})
					//调用云函数失败的情况
					.catch(err => {
						uni.navigateTo({
							url: "/pages/otherLogin/otherLogin",
							success() {
								uni.showToast({
									icon: "error",
									title: '调用云函数失败'
								})
								//关闭一键登入的授权窗口
								uni.closeAuthView()
								//标识打开一键登入的字段变成false,避免多次弹出uni.login
								userStore.authView = false;
							}
						})
					})
			},
			//一键登入授权窗口中各种失败的操作
			fail(err) {
				console.log(err)
				//只要失败了,那么就跳转到常规登入
				uni.navigateTo({
					url: "/pages/otherLogin/otherLogin",
					success() {
						uni.showToast({
							icon: "error",
							title: '登入服务器失败'
						})
						//关闭一键登入的授权窗口
						uni.closeAuthView()
						//标识打开一键登入的字段变成false,避免多次弹出uni.login
						userStore.authView = false;
					}
				})
			}
		})
		//#endif
	}

}

export default onekeyLogin